PSEUDO-OPS


	McAsm recognizes the following pseudo-ops:


 A5END


	End of an A5SEC. See A5SEC.


 A5OFF	<absolute expr>


	Initial "below A5 offset" for this module (and all 
subsequent modules not containing an A5OFF of their own). 
Specifies the initial offset from (below) A5 for A5SEC 
variables. McLink will store all A5 offset variables downward 
from A5 starting at -absolute expr. If an A5OFF is not 
specified, then McLink will store A5SEC variables in this 
module beginning immediately below the A5SEC variables in 
the previously linked module. A5OFF will affect A5 variable 
storage for the module it's in and all subsequently linked 
modules.


	You don't have to specify it - McLink will default the 
initial offset to $100 and concatenate A5 variables for all 
modules below that. It's possible to really screw things up with 
this pseudo-op, so if you do specify it make sure you know what 
you're doing. absolute expr should be a positive number - 
McLink will interpret it as a value to be subtracted from A5.


 A5REF	<symbol> [ , <symbol> , ... ]


	Reference an external symbol defined in another 
module as an A5SEC variable. If you want to use a variable in 
one module that's defined in another module as an A5 offset 
variable, then you have to reference it with A5REF.


	You don't have to use the addressing mode suffix 
(A5) on symbols that have been defined as A5REF's - McAsm 
will default to that address mode anytime you use the symbol 
by itself as an operand. For example, if the symbol handle is an 
A5REF symbol, then the two instructions clr.whandle(a5) 
and clr.whandle will be equivalent. (You can still type the 
(A5) if you want to, but it's a lot of unnecessary typing.) (You 
can also override this address mode default typing by just 
specifying the symbol in the explicit address mode that you 
want.)



	McLink will give you an error message if you A5REF 
a symbol that's not defined in an A5SEC.


 	All symbols specified in an A5REF are considered to 
be absolute symbols.


 A5SEC


	A5 offset variable definition section begin. 
Specifies that all subsequent variables until the next A5END 
are to be stored offset downwards from A5. No code or data 
producing statements are allowed inside an A5SEC. If you 
attempt to put any code or data producing statements inside an 
A5SEC you'll get an error message.


	Just as with A5REF's, you don't have to use the 
addressing mode suffix (A5) on symbols that have been defined 
in A5SEC's - McAsm will default to that address mode anytime 
you use the symbol by itself. (You can if you want to, but it's a 
lot of unnecessary typing.) (You can also override this address 
mode default typing by just specifying the symbol in the 
explicit address mode that you want.)


	All symbols defined in an A5SEC are considered to 
have a type of absolute.


 ALIGN


	Align the program counter to an even boundary. 
Forces the program counter to an even boundary by storing a 
zero byte if the program counter is odd.


 BASE	An, <symbol> [ , <symbol> , ... ]


	Base a symbol to an address register. Specifies that 
symbol is to be indexed with An anytime that symbol appears 
by itself as an operand.  For example, if you BASE the symbol 
HELLO to register A0, then the instructions CLR.WHELLO 
and CLR.WHELLO(A0) will generate equivalent object code. 
This is very similar to not having to type (A5) for A5REF or 
A5SEC variables, the only difference being that you can BASE 
to any address register.



 CASE


	Specify upper/lower case distinctions in symbol 
names. Normally McAsm compares symbol names without regard 
to case. For example, the symbols HELLO and HeLLo would be 
considered to be the same. The CASE pseudo-op causes McAsm 
to be sensitive to case. After using CASE, these two example 
names would be treated as two different names.


 DB	<expr> [ , <expr> , ... ]

 DC.B	<expr> [ , <expr> , ... ]


	Define constant byte. Stores a byte with value expr 
at the program counter. Either of the two forms may be used. 
expr may be either a numeric or a string expression. String 
expressions in DC.B's must be enclosed in single quotes as 
'string'.


 DL 	<expr> [ , <expr> , ... ]

 DC.L	<expr> [ , <expr> , ... ]


	Define constant long. Stores a long with value expr 
at the program counter. Either of the two forms may be used.


 DW 	<expr> [ , <expr> , ... ]

 DC.W	<expr> [ , <expr> , ... ]

 DC	<expr> [ , <expr> , ... ]


	Define constant word. Stores a word with value 
expr at the program counter. Either of the three forms may be 
used.


 DCB.B	<count>, <value>


	Define block of constant bytes. Stores count bytes 
having value expr at the program counter.


 DCB.L 	<count>, <value>


	Define block of constant longs. Stores count longs 
having value expr at the program counter.



 DCB 	<count>, <value>

 DCB.W 	<count>, <value>


	Define block of constant words. Stores count words 
having value expr at the program counter. Either of the two 
forms may be used.


 DEF 	<symbol> [ , <symbol> , ... ]

 XDEF 	<symbol> [ , <symbol> , ... ]


	Define symbols that may be referenced by other 
modules. Symbols that are DEF'ed may be REF'ed in other 
modules. DEF'ed symbols are also the only symbols that will 
appear in McLink's symbol table. The symbols DEF'ed must be 
relative symbols.  Either form may be used.


 DEND


	Dummy section end. See DSEC.


 DS.B	<absolute expr>


	Define byte storage. Allocates absolute expr 
number of bytes of storage at the current program counter.


 DS.L 	<absolute expr>


	Define long storage. Allocates absolute expr 
number of words of storage at the current program counter.


 DS.W 	<absolute expr>

 DS 	<absolute expr>


	Define word storage. Allocates absolute expr 
number of longs of storage at the current program counter. 
Either of the two forms may be used.


 DSEC 	<absolute expr>


	Dummy section begin. Begins a dummy section of 
storage definitions at origin absolute expr. No code or data 
producing statements are allowed inside a DSEC. If you attempt 
to put any code or data producing statements inside a DSEC, 
you'll get an error message.



	No storage is actually allocated for those variables 
defined in a DSEC. Its purpose is to allow constant symbols 
whose values depend on each other to be defined easily.


	All symbols defined in a DSEC are considered to be 
absolute.


 ELSE


	See IF.


 END


	End of source file. No code in the file after the END 
statement will be assembled. The END statement is optional in 
a file - McAsm will automatically stop assembling when it hits 
EOF. 


 ENDI


	End of an IF clause. See IF.


 ENDM


	End of a macro definition. See MACRO.


 EQU	<expr>


	Equate. Must have a label. The label will then be 
given the value of expr. Any particular label may only be 
equated once in a program.


	The type of a symbol defined by an EQU will have the 
same type as expr. If the program counter is used in expr, then 
the type of the symbol will be relative.


 FILL 	<count>, <value>


	Same as DCB.B.


 FSIGN 	<absolute expr>


	File signature. Specifies the four signature bytes of 
the McLink output file. Normally a character constant. If you 
don't specify a signature, McLink will default it to 'MCLK'. If 
you specify more than one signature, then the last one McLink 
sees in the link process will be used.


 FTYPE 	<absolute expr>


	File type. Specifies the four file type bytes of the 
McLink output file. Normally a character constant. If you don't 
specify a file type, then McLink will default it to 'APPL'. If you 
specify more than one file type, then the last one McLink sees 
in the link process will be used.


 IF 	<absolute expr>

statements A

[ELSE

statements B]

ENDI


	Conditional assembly control. If absolute expr is 
true (not equal to zero), then statements A will be assembled 
and statements B will not be assembled. Otherwise the 
opposite occurs. The ELSE clause is optional. IF statements 
may be nested up to 128 levels deep.


 IF1


	Same as IF except the expression evaluated for 
"trueness" is whether or not the assembly process is on pass 
one.


 IF2

 

	Same as IF except the expression evaluated for 
"trueness" is whether or not the assembly process is on pass 
two.


INCL	"filename"


	Include filename in the assembly at this point. 
Included files may be nested to any level (until you run out of 
memory to store the include stack).


 LINE	[ <char> [ , <absolute expr> ] ]


	Produces a comment line in the listing containing 
absolute expr number of characters char. The default for 
absolute expr is 50 and the default for char is the asterisk 
character. If either default is overridden, then further uses of 
LINE with defaulted parameters will use the new parameter(s).



 LIST	<absolute expr>


	Listing control. If absolute expr is false (equal to 
zero), then lines including and after the LIST line will not be 
listed. If absolute expr is true, then lines beginning with the 
LIST line and after it will be listed.


 LOC


	Local label scope control. Local labels are labels 
prefixed with a period. For example, .loop is a local label. Local 
labels may be reused as many times as desired in the source 
file as long as they are not multiply defined within the scope of 
a single LOC group. The scope of a single LOC group starts with 
a LOC statement and ends with the next LOC statement.

LOC will "reset" the local labels already used and allow them 
to be used again.


 MACRO	[&1,&2,...,&9]

statement 1

statement 2

...

statement n

ENDM


	Define a macro. The MACRO statement must have a 
label which will be the name of the macro. The &1,&2,...&9 
specify the formal parameters of the macro. The parameter 
numbers must be consecutively numbered. All statements up to 
the ENDM will be included in the macro's definition.


	Formal parameters may be used as operands in the 
statements in the macro definition. When the macro is invoked, 
the formal parameters will be replaced with the actual 
parameters before the line is assembled. (This is a string 
replacement.) When you invoke a macro, the number of actual 
parameters must equal the number of formal parameters.


	McAsm will do an automatic pseudo LOC on every 
macro call so that you can use local labels in the macro that 
won't conflict with local labels in the LOC scope group that 
encompasses the macro call. Pseudo LOC means that the macro 
expansion will have its own LOC scope without affecting local 
labels in it's encompassing LOC group - when the macro is 
finished, you'll still be in the LOC group you were in before the 
macro call. (But be careful - this also means that local labels 
outside the body of a mcaro can't be referenced inside the 
macro definition!) 


	The parameters of the macro may themselves 
represent other macros so that you can pass a macro name to a 
macro that is to be used as an opcode in the macro expansion.


	Macro calls may be nested to any level (until you run 
out of memory for the macro stack), but you cannot nest 
definitions.


 MEXP 	<absolute expr>


	Macro expansion control. If absolute expr is true 
(not equal to zero), then all statements in an expanded macro 
call will be listed. Otherwise only the statement containing the 
top level macro call will be listed.


 NAME	<symbol>


	Module name. Specifies the name of the module. The 
name will appear as the identifier of the module in the link map 
produced by McLink. If a NAME is not specified in a module, then 
McLink will use the filename of the module as the identifier.


 PAGE	["title"]


	Pagination control. Causes a formfeed to be output 
to the listing. If title is specified, then it will become the new 
page title.


 PRMT	"string"


	Prompt to screen. Will display string on the screen 
during the assembly.


 PRTR	"string"


	Printer control. If printer output is selected for the 
assembly, then string will be sent to the printer. All of the 
escape codes permitted in a TEXT string are also permitted in 
string. (This is used to select a printface style on the 
ImageWriter.)



 PSIZE 	<absolute expr>


	Page size control. Causes McAsm to use absolute 
expr as the number of source lines to be listed on each page. 
The default is 57 lines. (absolute expr does not include the 
top and bottom margin lines such as the header, title, etc.)


 REF 	<symbol> [ , <symbol> , ... ]

 XREF 	<symbol> [ , <symbol> , ... ]


	Reference a symbol defined in another module by a 
DEF statement. Allows symbols which are defined in other 
modules to be used in the module being assembled. Either of the 
two forms may be used.


	Symbols which are REF'ed are considered to be 
(must be!) relative.


 SET	<expr>


	Same as EQU, except the same label may be SET 
more than once in the file.


 TABS 	<absolute expr>


	Tab control. The default value of TABS is eight so 
that tabs expand to every eighth column.


 TERSE


	Normally, McAsm will generate line numbers in the 
listing. It will also show the program counter as four hex bytes. 
TERSE drops the line numbers and truncates the program 
counter to two hex bytes. Once you use TERSE, you can't go back 
to the verbose listing format in the same assembly. (Don't use 
TERSE if you're going to produce a cross reference of the 
assembly - you won't have the line numbers in the listing 
needed to use the cross reference.)



 TEXP 	<absolute expr>


	Text statement expansion control. Normally, McAsm 
will show all of the bytes generated by a TEXT statement in 
the listing. If absolute expr is false, then only one line of 
object code will be shown in the listing for TEXT statements. 
The balance of the bytes in the string (if any) will not appear in 
the listing.


 TEXT	[ + | - | # ] "string"


	Text statement. Produces ASCII code bytes of 
string at the program counter. The optional + sign causes bit 7 
to be set in every byte in the string. The optional - sign causes 
bit 7 to be set only on the last character in the string. The 
optional # causes a byte containing the length of the string to 
be stored at the beginning of the string. Only one optional 
character can be used at a time. A slash / character in the 
string is an escape character which when combined with the 
following character produces special characters in the string 
as follows:



	esc seq	resulting character	hex


	/R	carriage return	$0D

	/L	linefeed	$0A

	/"	double quote	$22

	/T	tab	$09

	/E	escape	$1B

	/0	null	$00

	//	slash	$2F

	/F	formfeed	$0C

	/B	backspace	$08

	/$hh	any hex code	$hh


	For ecample, the string "AB/RC" would produce the 
bytes 41 42 0D 43. "AB/TC" would produce 41 42 09 43. 
And "AB/$12C" would produce 41 42 12 43.


 TITLE	"string [ $ ] "


	Will place string on the second line of every listing 
page as a title. The $ character may be placed anywhere in the 
string to produce a timestamp in the title (date and time the 
assembly was started).


 TRAPW 	<absolute expr>


	Define a trap word. Must have a label. The label 
symbol may then be used as an opcode that will produce a word 
of object code having the value absolute expr. This is used for 
defining toolbox and O/S traps without having to define them in 
macros. (Macros take three lines of source code each, versus 
one line for a TRAPW definition.)


